From 23d7291a24f2c5f280db49317be999dfe3bd7472 Mon Sep 17 00:00:00 2001 From: gentoo90 Date: Sun, 19 Apr 2015 17:36:29 +0300 Subject: [PATCH] Add bashcomp for --example and restrict --manifest-path to propose only *.toml files --- src/etc/cargo.bashcomp.sh | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/etc/cargo.bashcomp.sh b/src/etc/cargo.bashcomp.sh index e6f0086aa..83f19591e 100644 --- a/src/etc/cargo.bashcomp.sh +++ b/src/etc/cargo.bashcomp.sh @@ -43,8 +43,15 @@ _cargo() else COMPREPLY=( $( compgen -W "$(cargo --list | tail -n +2)" -- "$cur" ) ) fi - elif [[ $cword -gt 2 && "$prev" = "$opt_mani" ]]; then - _filedir + elif [[ $cword -gt 2 ]]; then + case "${prev}" in + "$opt_mani") + _filedir toml + ;; + --example) + COMPREPLY=( $( compgen -W "$(_get_examples)" -- "$cur" ) ) + ;; + esac elif [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "${opts[$cmd]}" -- "$cur" ) ) fi @@ -56,4 +63,16 @@ _cargo() } && complete -o nospace -F _cargo cargo +_locate_manifest(){ + local manifest=`cargo locate-project 2>/dev/null` + # regexp-replace manifest '\{"root":"|"\}' '' + echo ${manifest:9:-2} +} + +_get_examples(){ + local files=($(dirname $(_locate_manifest))/examples/*.rs) + local names=("${files[@]##*/}") + local names=("${names[@]%.*}") + echo "${names[@]}" +} # vim:ft=sh -- 2.30.2